Skip to main content

Dependency injection installers

There are two dedicated installers for the Digital Banking plugin that should implement the following interfaces:

  • Meniga.InsightsFactory.DigitalBankingPlugin.IBankAdminPluginInstaller - interface for Bank Admin installer
  • Meniga.InsightsFactory.DigitalBankingPlugin.ITriggeringEnginePluginInstaller - interface for Triggering Engine installer

The following dependencies are injected into Dependency Injection Container by default:

  • Meniga.TriggeringEngine.Contracts.External.IDateTimeProvider
  • Meniga.TriggeringEngine.Contracts.External.UserIdentityExternal (for Triggering Engine only)
  • ILoggerFactory

Note: API controllers are registered automatically, while repositories have to be registered manually.

Bank Admin registration

Example registration for Bank Admin:

using System.Collections.Generic;
using System.Reflection;
using Meniga.InsightsFactory.BankAdmin.Contracts.External;
using Meniga.InsightsFactory.DigitalBankingExamplePlugin.ExampleRepository;
using Microsoft.Extensions.DependencyInjection;

namespace Meniga.InsightsFactory.DigitalBankingPlugin;

public class BankAdminPluginInstaller : IBankAdminPluginInstaller
{
public string PluginName => "DigitalBankingExamplePlugin";
public string ApiEndpointsPrefix => "digital-banking-plugin";

// this property is optional and is only required if the plugin is to use Menig plugin contracts
// or if repositories or controllers are placed in dependent assemblies
public IEnumerable<Assembly> DependantAssemblies => new[]
{
typeof(Meniga.InsightsFactory.DigitalBankingContracts.Controllers.PluginControllerBase).Assembly
};

public void Configure(IServiceCollection services)
{
services.AddScoped<IExampleRepository, ExampleRepository>();
}
}

Triggering Engine registration

Example registration for Triggering Engine:

using System.Collections.Generic;
using System.Reflection;
using Meniga.InsightsFactory.DigitalBankingExamplePlugin.ExampleRepository;
using Meniga.TriggeringEngine.Contracts.External;
using Microsoft.Extensions.DependencyInjection;

namespace Meniga.InsightsFactory.DigitalBankingPlugin;

public class TriggeringEnginePluginInstaller : ITriggeringEnginePluginInstaller
{
public string PluginName => "DigitalBankingExamplePlugin";

// this property is optional and is only required if the plugin is to use Menig plugin contracts
// or if repositories are placed in dependent assemblies
public IEnumerable<Assembly> DependantAssemblies => new[]
{
typeof(Meniga.InsightsFactory.DigitalBankingContracts.Controllers.PluginControllerBase).Assembly
};

public void Configure(IServiceCollection services)
{
services.AddScoped<IExampleRepository, ExampleRepository>();
}
}